"""开始学习"""
#!usr/bin/env python3
# -*- coding: utf-8 -*-
# 开始 基础
print("Hello world 你好")

#列表操作

cars=["a","b","c","d","y","i","f","p"]

cars.pop(1) # 有参数的情况下删除指定位置的元素 否则删除最后一个
cars.insert(1,"z") #指定位置插入元素
cars.remove("c") # 根据值删除元素
cars.sort(key=lambda x:x.lower()) #排序 改变原始列表
sorted(cars,key=lambda x:x.lower()) #不改变原始列表 返回一个副本
print(cars) 

#range函数

#得到偶数
muti = list(range(2,11,2)) #最后一个参数 2 表示步长

print(muti)

muti2 = muti[:] #快速复制一个数组元素
print(muti2,muti[1:5:2]) # 1 表示开始下标 5-1表示结束下标的 2表示截取步长

print(muti[-3:]) # -3表示从末尾开始数 第三个元素

s = "1" 

if s: # 字符串长度为0的话 会是false
    print("---")

arr = []

if arr: #长度为0的列表 不会通过
    print("")
else:
    print("空列表")

if 2 in muti:
    print("在列表里")

for i in range(1,10):
    if i==5:
        break
    print(i)

#字典 

d1 = {
    "Joth":"C",
    "lily":"python",
    "tom":"Php",
    "pour":"javascipt",
}

for key  in d1.keys(): #只遍历键
    print("key",key)

for val in d1.values():#只遍历值
    print("val",val)

for k,v in d1.items():
    print("k,v",k,v) #遍历键值
'''
msg = input("please enter your msg:")

print("you enter msg is {0}".format(msg))

msg = ""
while msg != "q":
    pass
    msg = input("input your msg:")
    print("you enter msg is {0}".format(msg))
'''

for i in range(1,5):
    if i==2:
        continue # Python也是有continue语句的
    print(i)

def fn(name,age):
    print("my name is {0} I am {1} years old.".format(name,age))

fn(age=20,name="zhou") #必须参数的函数 调用也可以指定关键字传递 这个时候传递的顺序无所谓了
inf = ["hui",28]
fn(*inf)
infDict = {'name':"zhh",'age':20}
fn(**infDict)

def dealData(data:list):
    '''处理列表的 永久有效'''
    data.pop()

data = [1,2,3,4]
dealData(data)

print(data)

from inspect import signature,Parameter

def testArgOrder(age,*,city,**kwarg):
    print("testArgOrder",signature(testArgOrder).parameters)

testArgOrder(21,city="gz")